@echo off
echo ========================================
echo    Windows Docker 环境配置脚本
echo ========================================
echo.

:: 检查Docker是否安装
echo 🔍 检查Docker安装状态...
docker --version >nul 2>&1
if %errorlevel% neq 0 (
    echo ❌ Docker未安装或不在PATH中
    echo 💡 请先安装Docker Desktop for Windows
    echo    下载地址: https://www.docker.com/products/docker-desktop
    pause
    exit /b 1
)

echo ✅ Docker已安装
docker --version

:: 检查Docker Desktop是否运行
echo.
echo 🔍 检查Docker Desktop运行状态...
docker info >nul 2>&1
if %errorlevel% neq 0 (
    echo ❌ Docker Desktop未运行
    echo 💡 请启动Docker Desktop并等待完全启动
    echo    启动后请重新运行此脚本
    pause
    exit /b 1
)

echo ✅ Docker Desktop运行正常

:: 配置Docker镜像源 (中国大陆用户)
echo.
echo 🔧 配置Docker镜像源...
echo 正在配置阿里云镜像源以加速镜像下载...

:: 创建或更新daemon.json配置文件 (需要管理员权限)
echo 正在配置Docker daemon.json...
echo 注意: 此配置需要重启Docker Desktop才能生效

:: 检查是否有管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo ⚠️  需要管理员权限来配置Docker daemon
    echo 💡 请以管理员身份运行此脚本，或手动配置Docker Desktop设置
    echo.
    echo 手动配置方法:
    echo 1. 打开Docker Desktop
    echo 2. 进入Settings ^> Docker Engine
    echo 3. 添加以下配置:
    echo {
    echo   "registry-mirrors": [
    echo     "https://registry.cn-hangzhou.aliyuncs.com",
    echo     "https://hub-mirror.c.163.com"
    echo   ],
    echo   "dns": ["8.8.8.8", "114.114.114.114"]
    echo }
    echo.
    goto :skip_daemon_config
)

:: 获取Docker Desktop数据目录
set DOCKER_DATA_DIR=%PROGRAMDATA%\Docker
if not exist "%DOCKER_DATA_DIR%" (
    echo ❌ Docker Desktop数据目录未找到
    echo 💡 请确保Docker Desktop已正确安装
    goto :skip_daemon_config
)

:: 创建daemon.json配置
set DAEMON_CONFIG=%DOCKER_DATA_DIR%\config\daemon.json
if not exist "%DOCKER_DATA_DIR%\config" mkdir "%DOCKER_DATA_DIR%\config"

echo {> "%DAEMON_CONFIG%"
echo   "registry-mirrors": [>> "%DAEMON_CONFIG%"
echo     "https://registry.cn-hangzhou.aliyuncs.com",>> "%DAEMON_CONFIG%"
echo     "https://hub-mirror.c.163.com",>> "%DAEMON_CONFIG%"
echo     "https://mirror.baidubce.com">> "%DAEMON_CONFIG%"
echo   ],>> "%DAEMON_CONFIG%"
echo   "dns": ["8.8.8.8", "114.114.114.114"],>> "%DAEMON_CONFIG%"
echo   "max-concurrent-downloads": 10,>> "%DAEMON_CONFIG%"
echo   "max-concurrent-uploads": 5>> "%DAEMON_CONFIG%"
echo }>> "%DAEMON_CONFIG%"

:skip_daemon_config

echo ✅ Docker镜像源配置完成

:: 预拉取常用镜像
echo.
echo 📦 预拉取Node.js镜像 (可能需要几分钟)...
echo 正在拉取 node:14.21.3-bullseye...
docker pull registry.cn-hangzhou.aliyuncs.com/library/node:14.21.3-bullseye
if %errorlevel% neq 0 (
    echo ⚠️  阿里云镜像拉取失败，尝试官方镜像...
    docker pull node:14.21.3-bullseye
    if %errorlevel% neq 0 (
        echo ❌ 镜像拉取失败，请检查网络连接
        echo 💡 建议：
        echo    1. 检查网络连接
        echo    2. 配置代理 (如果在企业网络环境)
        echo    3. 重启Docker Desktop
        pause
        exit /b 1
    )
)

echo ✅ Node.js镜像拉取成功

:: 测试Docker构建功能
echo.
echo 🧪 测试Docker构建功能...
echo FROM node:14.21.3-bullseye > Dockerfile.test
echo RUN echo "Docker构建测试成功" >> Dockerfile.test
docker build -t gitbuild-test -f Dockerfile.test .
if %errorlevel% neq 0 (
    echo ❌ Docker构建测试失败
    del Dockerfile.test
    pause
    exit /b 1
)

echo ✅ Docker构建测试成功
docker rmi gitbuild-test >nul 2>&1
del Dockerfile.test

echo.
echo ========================================
echo ✅ Windows Docker环境配置完成！
echo ========================================
echo.
echo 💡 建议：
echo    1. 重启Docker Desktop以应用配置
echo    2. 确保Docker Desktop设置为Linux容器模式
echo    3. 在Docker Desktop设置中启用文件共享
echo.
echo 现在可以正常使用项目的Docker构建功能了！
echo.
pause
